define(function(require, exports){
	var $ = require('jquery');
	var pubjs = require('pubjs');
	var util = require('util');
	var view  = require('@base/view');

	// 流量预估
	var FlowEstimate = view.container.extend({
		init: function(config){
			config = pubjs.conf(config, {
				'class': 'M-flowEstimate',
				'url': 'campaign/flowForecast',
				'toggleBtnText': LANG('预估流量')
			});
			this.Super('init', arguments);
		},
		//构建函数
		afterBuild:function(){
			var c = this.getConfig();
			var el = this.getDOM();
			var doms = this.$doms = {
				contentCon: $('<div class="contentCon"></div>').appendTo(el),
				titleCon : $('<div class="titleCon"><i class="uk-icon-angle-double-left"/></div>').appendTo(el)
			}
			//右侧按钮
			$('<h3/>').text(c.toggleBtnText).appendTo(doms.titleCon);

			$([
				'<h3>'+LANG('根据以下设置：')+'</h3>',
				'<span>'+LANG('投放地区、时段设置、浏览器、操作系统、PC端、自有人群、三方人群、上网场景、渠道、广告位')+'</span>',
				'<h3>'+LANG('预计一天内曝光量为：')+'</h3>',
				'<strong>'+util.numberFormat(0)+'</strong>'
			].join('')).appendTo(doms.contentCon);

			doms.flowValue = doms.contentCon.find('strong');

			//取消按钮
			this.createAsync('refresh', '@base/common/input.button', {
				'target': doms.contentCon,
				'value': LANG('刷新'),
				'data': 'refresh',
				'class': 'btn btn-default'
			});

			this.uiBind(doms.titleCon, 'click', 'eventToggleList');
		},
		//弹出控制函数
		eventToggleList:function(){
			var self = this;
			self.getDOM().toggleClass('flowAct')
				.find('.titleCon i').toggleClass('uk-icon-angle-double-right');
			// 广播事件通知拉取所需参数
			// self.fire('getFlowParam', function(ev){
			// 	self.refresh(ev.returnValue || {});
			// });
			return false;
		},
		onInputClick: function(ev){
			var self = this;
			// 广播事件通知拉取所需参数
			self.fire('getFlowParam', function(ev){
				self.refresh(ev.returnValue || {});
			});
			return false;
		},
		// 刷新流量值
		refresh: function(data){
			var self = this;
			var c = self.getConfig();
			//资料数据正常, 提交保存数据
			self.showLoading();
			pubjs.mc.send(
				c.url,
				data,
				self.afterRefresh.bind(self)
			);
			return self;
		},
		afterRefresh: function(err, data){
			this.hideLoading();
			if (err){
				pubjs.error(err);
				return false;
			}
			if(data){
				this.$doms.flowValue.text(util.numberFormat(data.number || 0));
			}
		}
	});
	exports.base = FlowEstimate;
});